Micron Document
____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|


The NomadNet German Wikipedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

πŸ” Search

Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―

Functional Programming System
part 3/5 Β· 14.8 KB total
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I P ( ⟨ ⟨ ⟨ ⟨ 1 , 2 , 3 ⟩ ⟩ , ⟨ ⟨ 6 , 5 , 4 ⟩ ⟩ ⟩ ⟩ ) = ( ( / + ) ∘ ∘ ( Ξ± Ξ± Γ— Γ— ) ∘ ∘ T r a n s ) ( ⟨ ⟨ ⟨ ⟨ 1 , 2 , 3 ⟩ ⟩ , ⟨ ⟨ 6 , 5 , 4 ⟩ ⟩ ⟩ ⟩ ) = ( ( / + ) ∘ ∘ ( Ξ± Ξ± Γ— Γ— ) ) ( T r a n s ( ⟨ ⟨ ⟨ ⟨ 1 , 2 , 3 ⟩ ⟩ , ⟨ ⟨ 6 , 5 , 4 ⟩ ⟩ ⟩ ⟩ ) = ( / + ) ( ( Ξ± Ξ± Γ— Γ— ) ( ⟨ ⟨ ⟨ ⟨ 1 , 6 ⟩ ⟩ , ⟨ ⟨ 2 , 5 ⟩ ⟩ , ⟨ ⟨ 3 , 4 ⟩ ⟩ ⟩ ⟩ ) = ( / + ) ( ⟨ ⟨ Γ— Γ— ( ⟨ ⟨ 1 , 6 ⟩ ⟩ ) , Γ— Γ— ( ⟨ ⟨ 2 , 5 ⟨ ⟨ ) , Γ— Γ— ( ⟨ ⟨ 3 , 4 ⟩ ⟩ ) ⟩ ⟩ = ( / + ) ( ⟨ ⟨ 6 , 10 , 12 ⟩ ⟩ ) = + ( ⟨ ⟨ 6 , + ( ⟨ ⟨ 10 , 12 ⟩ ⟩ ) ⟩ ⟩ = 28 {\displaystyle {\begin{aligned}&\mathrm {IP} (\langle \langle 1,2,3\rangle ,\langle 6,5,4\rangle \rangle )\\&=((/+)\circ (\alpha \times )\circ \mathrm {Trans} )(\langle \langle 1,2,3\rangle ,\langle 6,5,4\rangle \rangle )\\&=((/+)\circ (\alpha \times ))(\mathrm {Trans} (\langle \langle 1,2,3\rangle ,\langle 6,5,4\rangle \rangle )\\&=(/+)((\alpha \times )(\langle \langle 1,6\rangle ,\langle 2,5\rangle ,\langle 3,4\rangle \rangle )\\&=(/+)(\langle \times (\langle 1,6\rangle ),\times (\langle 2,5\langle ),\times (\langle 3,4\rangle )\rangle \\&=(/+)(\langle 6,10,12\rangle )\\&=+(\langle 6,+(\langle 10,12\rangle )\rangle \\&=28\end{aligned}}}

Der Rechenprozess stellt also eine Verarbeitungspipeline ohne inneren Zustand dar, der die Eingabe in drei getrennten Arbeitsschritten in die Ausgabe ΓΌberfΓΌhrt. Die Arbeitsschritte selbst kΓΆnnen fΓΌr sich in unterschiedlichem Grad parallelisiert werden. Auch die Erstellung einer Hardware-Pipeline fΓΌr das Programm I P {\displaystyle IP} wΓ€re mΓΆglich.

Notationen im FP-System

Backus verwendet eine lose an mathematische Konventionen angelehnte Notation und ergÀnzt diese um McCarthy'sche bedingte Ausdrücke sowie eine rekursive Darstellung für WHILE-Schleifen. Entscheidend ist, dass jede EntitÀt eine Funktion darstellt und damit mit dem Kompositionsoperator ∘ ∘ {\displaystyle \circ } vertrÀglich ist.

Zahlen als Selektoren

Die Vektorprogrammiersprache APL hatte einen entscheidenden Einfluss auf das Combinator based functional programming system von John Backus, das ohne Lambda-Variablenliste auskommt; stattdessen werden Selektoren (Zahlen) fΓΌr das Herauspicken von Werten aus einer Sequenz verwendet.

1:<x1,…,xn> β†’ x1
i:<x1,…,xi,…,xn> β†’ xi

| Combining … | … Form | |
|---|---|---|
| Applikation | f : x | = f(x) |
| Komposition | (f o g) : x | = f(g(x)) |
| Konstruktion | [ f 1 , f 2 , … , f n ] : x | = < f 1 :x , f 2 :x , … , f n :x > |
| Kondition | (p β†’ f ; g) : x | = wenn p:x = T dann f:x sonst wenn p:x = F dann g:x sonst βŠ₯ |
| Konstante | ~ x : y | = wenn y = βŠ₯ dann βŠ₯ sonst x |
| Insert | ( / f) : < x 1 , x 2 , … , x n > | = f: < x 1 , f: < x 2 , … f: < x n-1 , x n >>> |
| Apply to All | ( Ξ± f) : < x 1 , x 2 , … , x n > | = < f:x 1 , f:x 2 , … , f:x n > |
| Binary to Unary | bu f x | |
| While-Schleife | ( while p f) : x | = wenn p:x = T dann ( while p f) : (f : x) sonst wenn p:x = F dann x sonst βŠ₯ |

und die Definition von monadischen Funktionen:

Def Name ≑ Term

Mit βŠ₯ meinte Backus den Wert β€žBottomβ€œ, ein Wert wie β€žundefiniertβ€œ oder β€žAusnahmeβ€œ. T und F sind die Werte fΓΌr β€žwahrβ€œ und β€žfalschβ€œ.

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────